<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: black;
            color: aquamarine;
        }

        a {
            color: pink;
        }

        p {
            font-size: 1.2em;
            color: aquamarine;
            text-indent: 2em;
            /* 首行缩进 */
        }

        h4 {
            text-align: center;
        }

        h1 {
            color: violet;
            text-align: center;
            font-size: 2em;
            margin-top: 100px;
        }

        .code-container {
            margin: auto;
            background-color: darkorange;
            border: 1px solid #ccc;
            border-radius: 5px;
            padding: 0;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
            max-width: 800px;
            overflow: auto;
        }

        pre {
            background-color: lightslategray;
            border-left: 3px solid #007BFF;
            padding-top: 5px;
            white-space: pre-wrap;
            /* 保持空白符 */
            word-wrap: break-word;
            /* 长单词换行 */
            overflow: auto;
        }

        code {
            font-family: 'Courier New', Courier, monospace;
            /* 等宽字体 */
            font-size: 1rem;
        }

        .code-line {
            text-indent: 0;
            color: rgb(104, 225, 249);
        }

        .code-self {
            color: rgb(242, 88, 247);
        }
    </style>
</head>

<body>
    <h1>VsCode配置C运行环境</h1>
    <h4>本文主要参考文档：<a href="https://vscode.github.net.cn/docs/languages/cpp#google_vignette" target="_blank">用于 Visual
            Studio 代码的
            C/C++</a></h4>
    <p>首先，需要安装VsCode，<a href="https://code.visualstudio.com/"
            target="_blank">https://code.visualstudio.com</a>；下载安装之后，需要中文插件可以搜索“简体中文”安装：Chinese (Simplified) (简体中文)
        Language Pack for Visual Studio Code插件，重启生效</p>
    <p>然后，安装C/C++插件，在VsCode的扩展中搜索C/C++，安装即可；和C/C++ Runner插件一起安装，可以运行C语言程序；安装完毕后，重启VsCode生效。</p>
    <p>接着，安装配置本地gcc编译环境，这是官网：<a
            href="https://objects.githubusercontent.com/github-production-release-asset-2e65be/80988227/19da371e-6ab9-4858-9b44-b504631c4c5f?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20241114%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20241114T124242Z&X-Amz-Expires=300&X-Amz-Signature=95985996a2e05231d4f0d8eb7fb639543df45712fd4fdfbf597ee42c33ffa6b6&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3Dmsys2-x86_64-20230526.exe&response-content-type=application%2Foctet-stream"
            target="_blank">这是下载链接，下载自动开始</a>，按照提示根据自己的系统下载安装即可，注意记住自己选的安装目录（安装路径不能有中文，否则不能使用），<br>完成后，确保选中“立即运行
        MSYS2”框并选择“完成”。然后，MSYS2 终端窗口将自动打开。在此终端中，通过运行以下命令安装 MinGW-w64 工具链：
    <pre style="color: violet; font-size: 1.5em; text-align: center;">

                    pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
                    </pre>需要按Enter接受组中默认的包数；当提示是否继续安装时输入Y。
    <br>配置系统环境变量PATH（此电脑右键->属性->高级系统设置->环境变量），可以在系统变量中找到path，编辑，添加安装目录的bin目录（也可以就在系统变量中添加变量名（比如：MSYS2_HOME），设置值为安装目录的bin目录或之前目录，比如：D:\Msys2\ucrt64，最后在path中添加bin目录，比如：%MSYS2_HOME%\bin；然后重启电脑生效。
    </p>
    <p>检查 MinGW-w64 工具是否已正确安装且可用，打开新的命令提示符（运行cmd窗口）并键入以下命令；输入一条测试一条，能看到版本号说明安装成功。
    <pre style="color: violet; font-size: 1.5em; text-align: center;">

            gcc --version
            g++ --version
            gdb --version
        </pre>
    </p>
    <p>之后，需要创建一个C语言的项目，在VsCode的左侧点击“文件”，然后点击“新建文件夹”，输入项目名称，然后点击“确定”。</p>
    <p>然后，在项目文件夹中创建一个.c文件（比如test.c），输入代码，保存即可。示例：
    <div class="code-container">
        <pre><code>
            <span class="code-line">
    #include &ltstdio.h&gt // 包含标准输入输出头文件
            
    int main()
    {
        printf("Hello, World!\n"); // 输出“Hello, World!”
        return 0; // 返回0，表示程序正常结束
    }
</span>
        </code></pre>
    </div>
    </p>
    <p>运行项目，在VsCode的右上角点击“运行”（右上角的播放按钮），点击“开始调试”即可。然后从系统上检测到的编译器列表中选择C/C++: g++.exe 构建和调试活动文件。</p>
    <p>如果一切顺利，构建成功后，应该看到 “Hello World”
        出现在集成终端中。而且在项目文件夹下会生成一个和主接口文件同名的.exe文件，就是编译生成的可执行程序。并且会自动生成一个.vscode文件夹，里面三个文件：launch.json、tasks.json、c_cpp_properties.json，分别是调试配置、编译任务配置、C/C++语言配置。
    </p>
    <h3 style="color: lightcoral; text-align: center;">多文件的配置：</h3>
    <p>在项目文件夹中创建多个打开.vscode文件夹，运行后打开tasks.json文件，应该类似以下代码：
    <div class="code-container">
        <pre><code>
                    <span class="code-line">
{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 生成活动文件",
            "command": "D:/Msys2/ucrt64/bin/gcc.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}", // 表示当前打开的文件
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",  // 表示输出可运行程序名
                ""
                ],
            "options": {
                "cwd": "D:/Msys2/ucrt64/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
            }
        ],
    "version": "2.0.0"
}
        </span>
                </code></pre>
    </div>
    <p>配置多文件编译，只需要把上面代码中的注释的两行修改为如下所示即可：</p>
    <div class="code-container">
        <pre><code>
                            <span class="code-line">
{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 生成活动文件",
            "command": "D:/Msys2/ucrt64/bin/gcc.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                <span class="code-self">"${workspaceFolder}\\*.c",   // 表示当前打开的文件目录下所有.c文件"</span>
                "-o",
                <span class="code-self">"${workspaceFolder}\\${workspaceRootFolderName}.exe"  // 表示输出可运行程序名同当前打开的文件夹名"</span>
                ""
                ],
            "options": {
                "cwd": "D:/Msys2/ucrt64/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
            }
        ],
    "version": "2.0.0"
}
                </span>
                        </code></pre>
    </div>
    </p>

    <h3 style="color: lightcoral; text-align: center;">自己的头文件引入的配置：</h3>
    <p>在项目文件夹中打开.vscode文件夹中的c_cpp_properties.json文件，应该类似以下代码：
    <div class="code-container">
        <pre><code>
                                    <span class="code-line">
{
    "configurations": [
        {
            "name": "windows-gcc-x64",
            "includePath": [  // 用于查找头文件
                "${workspaceFolder}/**" // 表示当前打开的文件目录下所有文件
            ],
            "compilerPath": "D:/Msys2/ucrt64/bin/gcc.exe",
            "cStandard": "${default}",
            "cppStandard": "${default}",
            "intelliSenseMode": "windows-gcc-x64",
            "compilerArgs": [
                ""
            ]
        }
    ],
    "version": 4
}
                        </span>
                                </code></pre>
    </div>
    <p>这里需要在 "includePath" 中添加自己的头文件路径，可添加如下几行：</p>
    <div class="code-container">
        <pre><code>
            <span class="code-line">
{
    "configurations": [
        {
            "name": "windows-gcc-x64",
            "includePath": [  // 用于查找头文件
                "${workspaceFolder}/**" <span class="code-self">// 表示当前打开的文件目录下所有文件，不行时添加下面的
                {workspaceFolder}/.vscode"
                "${workspaceFolder}/*.c",
                "${workspaceFolder}/*.cpp",
                "${workspaceFolder}/.vscode"</span>
            ],
            "compilerPath": "D:/Msys2/ucrt64/bin/gcc.exe",
            "cStandard": "${default}",
            "cppStandard": "${default}",
            "intelliSenseMode": "windows-gcc-x64",
            "compilerArgs": [
                ""
            ]
        }
    ],
    "version": 4
}
            </span>
        </code></pre>
    </div>
    </p>

</body>

</html>